↳ Prolog
↳ PrologToPiTRSProof
sameleaves_in_gg(leaf(L), leaf(L)) → sameleaves_out_gg(leaf(L), leaf(L))
sameleaves_in_gg(tree(T1, T2), tree(S1, S2)) → U1_gg(T1, T2, S1, S2, getleave_in_ggaa(T1, T2, L, T))
getleave_in_ggaa(leaf(A), C, A, C) → getleave_out_ggaa(leaf(A), C, A, C)
getleave_in_ggaa(tree(A, B), C, L, O) → U4_ggaa(A, B, C, L, O, getleave_in_ggaa(A, tree(B, C), L, O))
U4_ggaa(A, B, C, L, O, getleave_out_ggaa(A, tree(B, C), L, O)) → getleave_out_ggaa(tree(A, B), C, L, O)
U1_gg(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → U2_gg(T1, T2, S1, S2, T, getleave_in_ggga(S1, S2, L, S))
getleave_in_ggga(leaf(A), C, A, C) → getleave_out_ggga(leaf(A), C, A, C)
getleave_in_ggga(tree(A, B), C, L, O) → U4_ggga(A, B, C, L, O, getleave_in_ggga(A, tree(B, C), L, O))
U4_ggga(A, B, C, L, O, getleave_out_ggga(A, tree(B, C), L, O)) → getleave_out_ggga(tree(A, B), C, L, O)
U2_gg(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → U3_gg(T1, T2, S1, S2, sameleaves_in_gg(T, S))
U3_gg(T1, T2, S1, S2, sameleaves_out_gg(T, S)) → sameleaves_out_gg(tree(T1, T2), tree(S1, S2))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
sameleaves_in_gg(leaf(L), leaf(L)) → sameleaves_out_gg(leaf(L), leaf(L))
sameleaves_in_gg(tree(T1, T2), tree(S1, S2)) → U1_gg(T1, T2, S1, S2, getleave_in_ggaa(T1, T2, L, T))
getleave_in_ggaa(leaf(A), C, A, C) → getleave_out_ggaa(leaf(A), C, A, C)
getleave_in_ggaa(tree(A, B), C, L, O) → U4_ggaa(A, B, C, L, O, getleave_in_ggaa(A, tree(B, C), L, O))
U4_ggaa(A, B, C, L, O, getleave_out_ggaa(A, tree(B, C), L, O)) → getleave_out_ggaa(tree(A, B), C, L, O)
U1_gg(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → U2_gg(T1, T2, S1, S2, T, getleave_in_ggga(S1, S2, L, S))
getleave_in_ggga(leaf(A), C, A, C) → getleave_out_ggga(leaf(A), C, A, C)
getleave_in_ggga(tree(A, B), C, L, O) → U4_ggga(A, B, C, L, O, getleave_in_ggga(A, tree(B, C), L, O))
U4_ggga(A, B, C, L, O, getleave_out_ggga(A, tree(B, C), L, O)) → getleave_out_ggga(tree(A, B), C, L, O)
U2_gg(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → U3_gg(T1, T2, S1, S2, sameleaves_in_gg(T, S))
U3_gg(T1, T2, S1, S2, sameleaves_out_gg(T, S)) → sameleaves_out_gg(tree(T1, T2), tree(S1, S2))
SAMELEAVES_IN_GG(tree(T1, T2), tree(S1, S2)) → U1_GG(T1, T2, S1, S2, getleave_in_ggaa(T1, T2, L, T))
SAMELEAVES_IN_GG(tree(T1, T2), tree(S1, S2)) → GETLEAVE_IN_GGAA(T1, T2, L, T)
GETLEAVE_IN_GGAA(tree(A, B), C, L, O) → U4_GGAA(A, B, C, L, O, getleave_in_ggaa(A, tree(B, C), L, O))
GETLEAVE_IN_GGAA(tree(A, B), C, L, O) → GETLEAVE_IN_GGAA(A, tree(B, C), L, O)
U1_GG(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → U2_GG(T1, T2, S1, S2, T, getleave_in_ggga(S1, S2, L, S))
U1_GG(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → GETLEAVE_IN_GGGA(S1, S2, L, S)
GETLEAVE_IN_GGGA(tree(A, B), C, L, O) → U4_GGGA(A, B, C, L, O, getleave_in_ggga(A, tree(B, C), L, O))
GETLEAVE_IN_GGGA(tree(A, B), C, L, O) → GETLEAVE_IN_GGGA(A, tree(B, C), L, O)
U2_GG(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → U3_GG(T1, T2, S1, S2, sameleaves_in_gg(T, S))
U2_GG(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → SAMELEAVES_IN_GG(T, S)
sameleaves_in_gg(leaf(L), leaf(L)) → sameleaves_out_gg(leaf(L), leaf(L))
sameleaves_in_gg(tree(T1, T2), tree(S1, S2)) → U1_gg(T1, T2, S1, S2, getleave_in_ggaa(T1, T2, L, T))
getleave_in_ggaa(leaf(A), C, A, C) → getleave_out_ggaa(leaf(A), C, A, C)
getleave_in_ggaa(tree(A, B), C, L, O) → U4_ggaa(A, B, C, L, O, getleave_in_ggaa(A, tree(B, C), L, O))
U4_ggaa(A, B, C, L, O, getleave_out_ggaa(A, tree(B, C), L, O)) → getleave_out_ggaa(tree(A, B), C, L, O)
U1_gg(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → U2_gg(T1, T2, S1, S2, T, getleave_in_ggga(S1, S2, L, S))
getleave_in_ggga(leaf(A), C, A, C) → getleave_out_ggga(leaf(A), C, A, C)
getleave_in_ggga(tree(A, B), C, L, O) → U4_ggga(A, B, C, L, O, getleave_in_ggga(A, tree(B, C), L, O))
U4_ggga(A, B, C, L, O, getleave_out_ggga(A, tree(B, C), L, O)) → getleave_out_ggga(tree(A, B), C, L, O)
U2_gg(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → U3_gg(T1, T2, S1, S2, sameleaves_in_gg(T, S))
U3_gg(T1, T2, S1, S2, sameleaves_out_gg(T, S)) → sameleaves_out_gg(tree(T1, T2), tree(S1, S2))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
SAMELEAVES_IN_GG(tree(T1, T2), tree(S1, S2)) → U1_GG(T1, T2, S1, S2, getleave_in_ggaa(T1, T2, L, T))
SAMELEAVES_IN_GG(tree(T1, T2), tree(S1, S2)) → GETLEAVE_IN_GGAA(T1, T2, L, T)
GETLEAVE_IN_GGAA(tree(A, B), C, L, O) → U4_GGAA(A, B, C, L, O, getleave_in_ggaa(A, tree(B, C), L, O))
GETLEAVE_IN_GGAA(tree(A, B), C, L, O) → GETLEAVE_IN_GGAA(A, tree(B, C), L, O)
U1_GG(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → U2_GG(T1, T2, S1, S2, T, getleave_in_ggga(S1, S2, L, S))
U1_GG(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → GETLEAVE_IN_GGGA(S1, S2, L, S)
GETLEAVE_IN_GGGA(tree(A, B), C, L, O) → U4_GGGA(A, B, C, L, O, getleave_in_ggga(A, tree(B, C), L, O))
GETLEAVE_IN_GGGA(tree(A, B), C, L, O) → GETLEAVE_IN_GGGA(A, tree(B, C), L, O)
U2_GG(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → U3_GG(T1, T2, S1, S2, sameleaves_in_gg(T, S))
U2_GG(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → SAMELEAVES_IN_GG(T, S)
sameleaves_in_gg(leaf(L), leaf(L)) → sameleaves_out_gg(leaf(L), leaf(L))
sameleaves_in_gg(tree(T1, T2), tree(S1, S2)) → U1_gg(T1, T2, S1, S2, getleave_in_ggaa(T1, T2, L, T))
getleave_in_ggaa(leaf(A), C, A, C) → getleave_out_ggaa(leaf(A), C, A, C)
getleave_in_ggaa(tree(A, B), C, L, O) → U4_ggaa(A, B, C, L, O, getleave_in_ggaa(A, tree(B, C), L, O))
U4_ggaa(A, B, C, L, O, getleave_out_ggaa(A, tree(B, C), L, O)) → getleave_out_ggaa(tree(A, B), C, L, O)
U1_gg(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → U2_gg(T1, T2, S1, S2, T, getleave_in_ggga(S1, S2, L, S))
getleave_in_ggga(leaf(A), C, A, C) → getleave_out_ggga(leaf(A), C, A, C)
getleave_in_ggga(tree(A, B), C, L, O) → U4_ggga(A, B, C, L, O, getleave_in_ggga(A, tree(B, C), L, O))
U4_ggga(A, B, C, L, O, getleave_out_ggga(A, tree(B, C), L, O)) → getleave_out_ggga(tree(A, B), C, L, O)
U2_gg(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → U3_gg(T1, T2, S1, S2, sameleaves_in_gg(T, S))
U3_gg(T1, T2, S1, S2, sameleaves_out_gg(T, S)) → sameleaves_out_gg(tree(T1, T2), tree(S1, S2))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
GETLEAVE_IN_GGGA(tree(A, B), C, L, O) → GETLEAVE_IN_GGGA(A, tree(B, C), L, O)
sameleaves_in_gg(leaf(L), leaf(L)) → sameleaves_out_gg(leaf(L), leaf(L))
sameleaves_in_gg(tree(T1, T2), tree(S1, S2)) → U1_gg(T1, T2, S1, S2, getleave_in_ggaa(T1, T2, L, T))
getleave_in_ggaa(leaf(A), C, A, C) → getleave_out_ggaa(leaf(A), C, A, C)
getleave_in_ggaa(tree(A, B), C, L, O) → U4_ggaa(A, B, C, L, O, getleave_in_ggaa(A, tree(B, C), L, O))
U4_ggaa(A, B, C, L, O, getleave_out_ggaa(A, tree(B, C), L, O)) → getleave_out_ggaa(tree(A, B), C, L, O)
U1_gg(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → U2_gg(T1, T2, S1, S2, T, getleave_in_ggga(S1, S2, L, S))
getleave_in_ggga(leaf(A), C, A, C) → getleave_out_ggga(leaf(A), C, A, C)
getleave_in_ggga(tree(A, B), C, L, O) → U4_ggga(A, B, C, L, O, getleave_in_ggga(A, tree(B, C), L, O))
U4_ggga(A, B, C, L, O, getleave_out_ggga(A, tree(B, C), L, O)) → getleave_out_ggga(tree(A, B), C, L, O)
U2_gg(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → U3_gg(T1, T2, S1, S2, sameleaves_in_gg(T, S))
U3_gg(T1, T2, S1, S2, sameleaves_out_gg(T, S)) → sameleaves_out_gg(tree(T1, T2), tree(S1, S2))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
GETLEAVE_IN_GGGA(tree(A, B), C, L, O) → GETLEAVE_IN_GGGA(A, tree(B, C), L, O)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
GETLEAVE_IN_GGGA(tree(A, B), C, L) → GETLEAVE_IN_GGGA(A, tree(B, C), L)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
GETLEAVE_IN_GGAA(tree(A, B), C, L, O) → GETLEAVE_IN_GGAA(A, tree(B, C), L, O)
sameleaves_in_gg(leaf(L), leaf(L)) → sameleaves_out_gg(leaf(L), leaf(L))
sameleaves_in_gg(tree(T1, T2), tree(S1, S2)) → U1_gg(T1, T2, S1, S2, getleave_in_ggaa(T1, T2, L, T))
getleave_in_ggaa(leaf(A), C, A, C) → getleave_out_ggaa(leaf(A), C, A, C)
getleave_in_ggaa(tree(A, B), C, L, O) → U4_ggaa(A, B, C, L, O, getleave_in_ggaa(A, tree(B, C), L, O))
U4_ggaa(A, B, C, L, O, getleave_out_ggaa(A, tree(B, C), L, O)) → getleave_out_ggaa(tree(A, B), C, L, O)
U1_gg(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → U2_gg(T1, T2, S1, S2, T, getleave_in_ggga(S1, S2, L, S))
getleave_in_ggga(leaf(A), C, A, C) → getleave_out_ggga(leaf(A), C, A, C)
getleave_in_ggga(tree(A, B), C, L, O) → U4_ggga(A, B, C, L, O, getleave_in_ggga(A, tree(B, C), L, O))
U4_ggga(A, B, C, L, O, getleave_out_ggga(A, tree(B, C), L, O)) → getleave_out_ggga(tree(A, B), C, L, O)
U2_gg(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → U3_gg(T1, T2, S1, S2, sameleaves_in_gg(T, S))
U3_gg(T1, T2, S1, S2, sameleaves_out_gg(T, S)) → sameleaves_out_gg(tree(T1, T2), tree(S1, S2))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
GETLEAVE_IN_GGAA(tree(A, B), C, L, O) → GETLEAVE_IN_GGAA(A, tree(B, C), L, O)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
GETLEAVE_IN_GGAA(tree(A, B), C) → GETLEAVE_IN_GGAA(A, tree(B, C))
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
U1_GG(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → U2_GG(T1, T2, S1, S2, T, getleave_in_ggga(S1, S2, L, S))
U2_GG(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → SAMELEAVES_IN_GG(T, S)
SAMELEAVES_IN_GG(tree(T1, T2), tree(S1, S2)) → U1_GG(T1, T2, S1, S2, getleave_in_ggaa(T1, T2, L, T))
sameleaves_in_gg(leaf(L), leaf(L)) → sameleaves_out_gg(leaf(L), leaf(L))
sameleaves_in_gg(tree(T1, T2), tree(S1, S2)) → U1_gg(T1, T2, S1, S2, getleave_in_ggaa(T1, T2, L, T))
getleave_in_ggaa(leaf(A), C, A, C) → getleave_out_ggaa(leaf(A), C, A, C)
getleave_in_ggaa(tree(A, B), C, L, O) → U4_ggaa(A, B, C, L, O, getleave_in_ggaa(A, tree(B, C), L, O))
U4_ggaa(A, B, C, L, O, getleave_out_ggaa(A, tree(B, C), L, O)) → getleave_out_ggaa(tree(A, B), C, L, O)
U1_gg(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → U2_gg(T1, T2, S1, S2, T, getleave_in_ggga(S1, S2, L, S))
getleave_in_ggga(leaf(A), C, A, C) → getleave_out_ggga(leaf(A), C, A, C)
getleave_in_ggga(tree(A, B), C, L, O) → U4_ggga(A, B, C, L, O, getleave_in_ggga(A, tree(B, C), L, O))
U4_ggga(A, B, C, L, O, getleave_out_ggga(A, tree(B, C), L, O)) → getleave_out_ggga(tree(A, B), C, L, O)
U2_gg(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → U3_gg(T1, T2, S1, S2, sameleaves_in_gg(T, S))
U3_gg(T1, T2, S1, S2, sameleaves_out_gg(T, S)) → sameleaves_out_gg(tree(T1, T2), tree(S1, S2))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
U1_GG(T1, T2, S1, S2, getleave_out_ggaa(T1, T2, L, T)) → U2_GG(T1, T2, S1, S2, T, getleave_in_ggga(S1, S2, L, S))
U2_GG(T1, T2, S1, S2, T, getleave_out_ggga(S1, S2, L, S)) → SAMELEAVES_IN_GG(T, S)
SAMELEAVES_IN_GG(tree(T1, T2), tree(S1, S2)) → U1_GG(T1, T2, S1, S2, getleave_in_ggaa(T1, T2, L, T))
getleave_in_ggga(leaf(A), C, A, C) → getleave_out_ggga(leaf(A), C, A, C)
getleave_in_ggga(tree(A, B), C, L, O) → U4_ggga(A, B, C, L, O, getleave_in_ggga(A, tree(B, C), L, O))
getleave_in_ggaa(leaf(A), C, A, C) → getleave_out_ggaa(leaf(A), C, A, C)
getleave_in_ggaa(tree(A, B), C, L, O) → U4_ggaa(A, B, C, L, O, getleave_in_ggaa(A, tree(B, C), L, O))
U4_ggga(A, B, C, L, O, getleave_out_ggga(A, tree(B, C), L, O)) → getleave_out_ggga(tree(A, B), C, L, O)
U4_ggaa(A, B, C, L, O, getleave_out_ggaa(A, tree(B, C), L, O)) → getleave_out_ggaa(tree(A, B), C, L, O)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
SAMELEAVES_IN_GG(tree(T1, T2), tree(S1, S2)) → U1_GG(S1, S2, getleave_in_ggaa(T1, T2))
U1_GG(S1, S2, getleave_out_ggaa(L, T)) → U2_GG(T, getleave_in_ggga(S1, S2, L))
U2_GG(T, getleave_out_ggga(S)) → SAMELEAVES_IN_GG(T, S)
getleave_in_ggga(leaf(A), C, A) → getleave_out_ggga(C)
getleave_in_ggga(tree(A, B), C, L) → U4_ggga(getleave_in_ggga(A, tree(B, C), L))
getleave_in_ggaa(leaf(A), C) → getleave_out_ggaa(A, C)
getleave_in_ggaa(tree(A, B), C) → U4_ggaa(getleave_in_ggaa(A, tree(B, C)))
U4_ggga(getleave_out_ggga(O)) → getleave_out_ggga(O)
U4_ggaa(getleave_out_ggaa(L, O)) → getleave_out_ggaa(L, O)
getleave_in_ggga(x0, x1, x2)
getleave_in_ggaa(x0, x1)
U4_ggga(x0)
U4_ggaa(x0)
Used ordering: POLO with Polynomial interpretation [25]:
getleave_in_ggga(leaf(A), C, A) → getleave_out_ggga(C)
getleave_in_ggaa(leaf(A), C) → getleave_out_ggaa(A, C)
POL(SAMELEAVES_IN_GG(x1, x2)) = 2·x1 + x2
POL(U1_GG(x1, x2, x3)) = x1 + x2 + x3
POL(U2_GG(x1, x2)) = 2·x1 + x2
POL(U4_ggaa(x1)) = x1
POL(U4_ggga(x1)) = x1
POL(getleave_in_ggaa(x1, x2)) = 2·x1 + 2·x2
POL(getleave_in_ggga(x1, x2, x3)) = x1 + x2 + 2·x3
POL(getleave_out_ggaa(x1, x2)) = 2·x1 + 2·x2
POL(getleave_out_ggga(x1)) = x1
POL(leaf(x1)) = x1
POL(tree(x1, x2)) = x1 + x2
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ RuleRemovalProof
SAMELEAVES_IN_GG(tree(T1, T2), tree(S1, S2)) → U1_GG(S1, S2, getleave_in_ggaa(T1, T2))
U1_GG(S1, S2, getleave_out_ggaa(L, T)) → U2_GG(T, getleave_in_ggga(S1, S2, L))
U2_GG(T, getleave_out_ggga(S)) → SAMELEAVES_IN_GG(T, S)
getleave_in_ggga(tree(A, B), C, L) → U4_ggga(getleave_in_ggga(A, tree(B, C), L))
U4_ggga(getleave_out_ggga(O)) → getleave_out_ggga(O)
getleave_in_ggaa(tree(A, B), C) → U4_ggaa(getleave_in_ggaa(A, tree(B, C)))
U4_ggaa(getleave_out_ggaa(L, O)) → getleave_out_ggaa(L, O)
getleave_in_ggga(x0, x1, x2)
getleave_in_ggaa(x0, x1)
U4_ggga(x0)
U4_ggaa(x0)
U1_GG(S1, S2, getleave_out_ggaa(L, T)) → U2_GG(T, getleave_in_ggga(S1, S2, L))
POL(SAMELEAVES_IN_GG(x1, x2)) = 2·x1 + 2·x2
POL(U1_GG(x1, x2, x3)) = 2·x1 + 2·x2 + x3
POL(U2_GG(x1, x2)) = 2·x1 + x2
POL(U4_ggaa(x1)) = x1
POL(U4_ggga(x1)) = x1
POL(getleave_in_ggaa(x1, x2)) = 2·x1 + x2
POL(getleave_in_ggga(x1, x2, x3)) = 2·x1 + 2·x2 + x3
POL(getleave_out_ggaa(x1, x2)) = 1 + 2·x1 + 2·x2
POL(getleave_out_ggga(x1)) = 2·x1
POL(tree(x1, x2)) = x1 + x2
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ DependencyGraphProof
SAMELEAVES_IN_GG(tree(T1, T2), tree(S1, S2)) → U1_GG(S1, S2, getleave_in_ggaa(T1, T2))
U2_GG(T, getleave_out_ggga(S)) → SAMELEAVES_IN_GG(T, S)
getleave_in_ggga(tree(A, B), C, L) → U4_ggga(getleave_in_ggga(A, tree(B, C), L))
U4_ggga(getleave_out_ggga(O)) → getleave_out_ggga(O)
getleave_in_ggaa(tree(A, B), C) → U4_ggaa(getleave_in_ggaa(A, tree(B, C)))
U4_ggaa(getleave_out_ggaa(L, O)) → getleave_out_ggaa(L, O)
getleave_in_ggga(x0, x1, x2)
getleave_in_ggaa(x0, x1)
U4_ggga(x0)
U4_ggaa(x0)